# 页面中的frame是隔离的,要想定位frame中的标签，必须切换到这个frame才能定位。
import os.path
import time

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
file = 'file:///' + os.path.abspath('html/frame.html')
driver.get(file)

# 直接定位inner
# print(driver.find_element(By.ID, 'inner_h3').get_attribute('outerHTML'))  定位不到

# 切换到frame1 中进行定位
frame1 = driver.find_element(By.ID, 'f1')
driver.switch_to.frame(frame1)
print(driver.find_element(By.ID, 'inner_h3').get_attribute('outerHTML'))

# 切换到frame2 中进行定位
frame2 = driver.find_element(By.ID, 'f2')
driver.switch_to.frame(frame2)
print(driver.find_element(By.ID, 'p1').get_attribute('outerHTML'))

# 切换到父级frame
driver.switch_to.parent_frame()
print(driver.find_element(By.ID, 'inner_h3').get_attribute('outerHTML'))

# 切换回主页面
print(driver.find_element(By.XPATH, '//h3').get_attribute('outerHTML'))  # 找到的是frame1下的h3
driver.switch_to.default_content()
print(driver.find_element(By.XPATH, '//h3').get_attribute('outerHTML'))  # 找到的是主页面的h3

time.sleep(3)
driver.quit()
